CouchDB একটি ডিস্ট্রিবিউটেড ডকুমেন্ট-ভিত্তিক NoSQL ডাটাবেস সিস্টেম যা সুরক্ষা এবং প্রমাণীকরণের জন্য একটি শক্তিশালী ব্যবস্থা প্রদান করে। CouchDB-তে সিকিউরিটি ব্যবস্থাপনা এমনভাবে ডিজাইন করা হয়েছে যাতে ডেটাবেস এবং ডকুমেন্টের অ্যাক্সেস সঠিকভাবে নিয়ন্ত্রণ করা যায় এবং বিভিন্ন ব্যবহারকারীর জন্য নিরাপদ প্রবেশাধিকার নিশ্চিত করা যায়।
CouchDB-এর সুরক্ষা ব্যবস্থা নিচের প্রধান অংশে বিভক্ত:
Authentication হল প্রক্রিয়া যার মাধ্যমে ব্যবহারকারীরা তাদের পরিচয় যাচাই করে যাতে তারা ডেটাবেসে অ্যাক্সেস পেতে পারে। CouchDB দুটি প্রধান পদ্ধতি দ্বারা প্রমাণীকরণ পরিচালনা করে:
লগইন উদাহরণ:
curl -X POST http://127.0.0.1:5984/_session -d '{"name": "admin", "password": "password"}'
এটি যদি সফল হয়, তাহলে একটি কুকি তৈরি হবে, যা পরবর্তী রিকুয়েস্টে ব্যবহার করা যাবে।
টোকেন জেনারেশন উদাহরণ:
curl -X POST http://127.0.0.1:5984/_session -d '{"name": "admin", "password": "password"}'
এটি একটি টোকেন তৈরি করবে, যা পরবর্তী রিকুয়েস্টে ব্যবহার করা যেতে পারে।
Authorization হল সেই প্রক্রিয়া যার মাধ্যমে নির্ধারণ করা হয় ব্যবহারকারী কোন ডেটাবেস এবং ডকুমেন্টগুলিতে অ্যাক্সেস পেতে পারেন। CouchDB Role-based Access Control (RBAC) ব্যবস্থাপনা ব্যবহার করে যা ব্যবহারকারীদের নির্দিষ্ট roles বা অধিকার প্রদান করে।
admin
, reader
, বা writer
।উদাহরণ: ব্যবহারকারী তৈরি এবং রোল অ্যাসাইনমেন্ট:
curl -X PUT http://127.0.0.1:5984/_users/org.couchdb.user:john_doe -d '{
"name": "john_doe",
"password": "securepassword",
"roles": ["reader"],
"type": "user"
}'
এটি ব্যবহারকারী john_doe তৈরি করবে এবং তাকে reader রোল প্রদান করবে।
উদাহরণ:
curl -X PUT http://127.0.0.1:5984/mydatabase/_security -d '{
"admins": {"names": ["admin_user"], "roles": []},
"readers": {"names": ["john_doe"], "roles": []}
}'
এটি mydatabase ডেটাবেসের জন্য admin_user কে অ্যাডমিন এবং john_doe কে রিডার অ্যাক্সেস প্রদান করবে।
CouchDB SSL/TLS সমর্থন করে, যা ডেটা ট্রান্সমিশন নিরাপদ করতে সহায়ক। আপনি আপনার CouchDB সার্ভারে SSL সেটআপ করে ডেটা এনক্রিপ্ট করে নিরাপদ যোগাযোগ প্রতিষ্ঠা করতে পারেন।
CouchDB-তে SSL সেটআপ করতে হলে, আপনাকে CouchDB সার্ভারে একটি SSL সনদ ইনস্টল করতে হবে এবং কনফিগারেশন ফাইল (local.ini) পরিবর্তন করতে হবে।
উদাহরণ (CouchDB কনফিগারেশন):
[couch_httpd_ssl]
enabled = true
cert_file = /path/to/certificate.pem
key_file = /path/to/private_key.pem
এটি SSL সক্রিয় করবে এবং নির্দিষ্ট সনদ এবং কী ফাইল ব্যবহার করে সুরক্ষিত সংযোগ তৈরি করবে।
CouchDB-এর Audit Logs ব্যবস্থাপনা সাহায্য করে নিরাপত্তা সংক্রান্ত ঘটনা ট্র্যাক করতে। এটি সিস্টেমের নিরাপত্তা আরও শক্তিশালী করতে সহায়ক। এর মাধ্যমে আপনি সার্ভারে যেকোনো পরিবর্তন, যেমন লগইন চেষ্টা, ডেটাবেস অ্যাক্সেস, এবং সিস্টেমের অন্যান্য কার্যকলাপ ট্র্যাক করতে পারবেন।
CouchDB Security এবং Authentication এর মাধ্যমে ডেটাবেস এবং ডকুমেন্টের নিরাপত্তা নিশ্চিত করা যায়। CouchDB প্রমাণীকরণ ব্যবস্থায় cookie-based এবং token-based authentication ব্যবহৃত হয়। Role-based access control (RBAC) এর মাধ্যমে আপনি ব্যবহারকারীদের নির্দিষ্ট ডেটাবেস এবং ডকুমেন্ট অ্যাক্সেস নিয়ন্ত্রণ করতে পারেন। এছাড়া SSL/TLS encryption ট্রান্সমিশন সুরক্ষিত করার জন্য সহায়ক। নিরাপত্তা সঠিকভাবে ব্যবস্থাপনা করলে, CouchDB একটি নিরাপদ এবং স্কেলেবল ডাটাবেস হিসেবে ব্যবহৃত হতে পারে।
CouchDB একটি শক্তিশালী এবং স্কেলেবল ডাটাবেস সিস্টেম, যা উচ্চ স্তরের নিরাপত্তা বৈশিষ্ট্য সরবরাহ করে। CouchDB-এর Built-in Security Features ব্যবহারকারীদের ডেটাবেস এবং ডকুমেন্টের নিরাপত্তা নিশ্চিত করতে সাহায্য করে। এই সিকিউরিটি বৈশিষ্ট্যগুলির মধ্যে রয়েছে Authentication, Authorization, SSL Encryption, Role-based Access Control (RBAC), এবং Audit Logging। নিচে বিস্তারিত আলোচনা করা হলো:
Authentication হল সেই প্রক্রিয়া যেখানে CouchDB ব্যবহারকারীকে শনাক্ত করার জন্য একটি username এবং password সংগ্রহ করে। CouchDB প্রমাণীকরণ সিস্টেম দুটি প্রধান পদ্ধতির মাধ্যমে কাজ করতে পারে:
Authorization
হেডারে Base64-encoded credentials পাঠায়।CouchDB তে Authorization ব্যবস্থা ব্যবহৃত হয়, যা প্রমাণীকৃত ব্যবহারকারীদের নির্দিষ্ট রিসোর্সে অ্যাক্সেস নিয়ন্ত্রণ করে। এটি Role-based Access Control (RBAC) এর মাধ্যমে পরিচালিত হয়, যার সাহায্যে ব্যবহারকারীকে বিভিন্ন role নির্ধারণ করা হয়।
উদাহরণ:
_users
ডেটাবেসে ব্যবহারকারীদের তথ্য সংরক্ষণ করে, যেখানে roles এবং password hashes সংরক্ষিত থাকে।CouchDB SSL/TLS এনক্রিপশন সাপোর্ট করে, যা ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা স্থানান্তরকে নিরাপদ করে তোলে। SSL/TLS ব্যবহার করলে ডেটা ট্রান্সমিশন নিরাপদ থাকে এবং Man-in-the-Middle আক্রমণ থেকে সুরক্ষিত থাকে।
CouchDB CORS (Cross-Origin Resource Sharing) সমর্থন করে, যার মাধ্যমে অন্যান্য ডোমেইন বা সার্ভার থেকে CouchDB তে অ্যাক্সেস নিয়ন্ত্রণ করা যায়। CORS ব্যবহার করে আপনি কীভাবে এবং কোন সার্ভারগুলি আপনার CouchDB ডেটাবেসে অ্যাক্সেস পাবে তা নির্ধারণ করতে পারেন।
CouchDB Audit Logs সরবরাহ করে, যা সিস্টেমে হওয়া সব কার্যক্রমের একটি বিস্তারিত রেকর্ড রাখে। এটি নিরাপত্তা পর্যবেক্ষণ এবং ডেটাবেস অ্যাক্সেসের ইতিহাস ট্র্যাক করার জন্য অত্যন্ত গুরুত্বপূর্ণ।
CouchDB প্রতিটি ডেটাবেসের জন্য নিরাপত্তা কনফিগারেশন প্রদান করে। _security ডকুমেন্টের মাধ্যমে আপনি ডেটাবেসে অ্যাক্সেস এবং অনুমতি নিয়ন্ত্রণ করতে পারেন। আপনি read এবং write অধিকার দিতে বা নির্ধারিত করতে পারেন, যা ডেটাবেস এবং ডকুমেন্টের উপর এক্সেস নিয়ন্ত্রণ করতে সাহায্য করে।
CouchDB এর Built-in Security Features ডেটাবেস এবং ডকুমেন্টের নিরাপত্তা সুনিশ্চিত করতে বিভিন্ন কার্যকরী বৈশিষ্ট্য সরবরাহ করে। এগুলির মধ্যে রয়েছে:
এই নিরাপত্তা বৈশিষ্ট্যগুলি CouchDB কে ডেটাবেস পরিচালনার জন্য একটি শক্তিশালী এবং নিরাপদ সমাধান করে তোলে, যা বিশেষভাবে ব্যবহারকারীদের নিরাপত্তা এবং ডেটা সুরক্ষা নিশ্চিত করে।
CouchDB নিরাপত্তার জন্য দুটি প্রধান Authentication পদ্ধতি ব্যবহার করে: Cookie-based Authentication এবং Token-based Authentication। এই দুটি পদ্ধতি ব্যবহারকারীকে তাদের অ্যাক্সেস প্রদান করে, কিন্তু তাদের কাজ করার পদ্ধতি এবং নিরাপত্তার ব্যবস্থাপনা আলাদা। নিচে এই দুটি পদ্ধতির বিস্তারিত আলোচনা করা হলো:
Cookie-based Authentication একটি ক্লায়েন্ট-সার্ভার ভিত্তিক প্রক্রিয়া, যেখানে সার্ভার একটি cookie তৈরি করে এবং ক্লায়েন্টকে তা প্রদান করে। ক্লায়েন্ট তার পরবর্তী অনুরোধে সেই cookie ব্যবহার করে সার্ভারের কাছে অ্যাক্সেস প্রমাণিত করে।
curl -X POST http://127.0.0.1:5984/_session -H "Content-Type: application/json" -d '{
"name": "admin",
"password": "admin_password"
}'
এটি একটি cookie ফিরিয়ে দেবে, যা পরবর্তী রিকুয়েস্টে ব্যবহার করতে হবে।
curl -X GET http://127.0.0.1:5984/mydatabase -b cookies.txt
এখানে, cookies.txt
ফাইলে প্রাপ্ত cookie সংরক্ষিত থাকবে, যা সার্ভার যাচাই করে প্রমাণীকৃত রিকুয়েস্ট হিসেবে গ্রহণ করবে।
Token-based Authentication ব্যবহারকারীর প্রমাণীকরণের জন্য একটি JWT (JSON Web Token) বা অন্য ধরনের টোকেন ব্যবহার করে। এই পদ্ধতিতে, ব্যবহারকারী একবার লগইন করলে, সার্ভার তাকে একটি Token প্রদান করে এবং সেটি পরবর্তী অনুরোধে ব্যবহার করা হয়। টোকেন সাধারণত নির্দিষ্ট সময়ের জন্য বৈধ থাকে এবং সময়সীমা শেষ হলে আবার নতুন টোকেন সংগ্রহ করতে হয়।
curl -X POST http://127.0.0.1:5984/_session -H "Content-Type: application/json" -d '{
"name": "admin",
"password": "admin_password"
}'
এটি JWT বা Token প্রদান করবে, যা পরবর্তী অনুরোধে ব্যবহার করতে হবে।
curl -X GET http://127.0.0.1:5984/mydatabase -H "Authorization: Bearer <token>"
এখানে, <token>
এর স্থানে প্রাপ্ত JWT বা Token ব্যবহার করতে হবে।
বৈশিষ্ট্য | Cookie-based Authentication | Token-based Authentication |
---|---|---|
প্রমাণীকরণের পদ্ধতি | ব্যবহারকারী প্রথম লগইন করলে একটি cookie প্রদান করা হয়। | প্রথম লগইনে টোকেন (যেমন JWT) প্রদান করা হয়। |
অ্যাক্সেস মেথড | পরবর্তী রিকুয়েস্টে cookie ব্যবহার করা হয়। | পরবর্তী রিকুয়েস্টে token হেডারে পাঠানো হয়। |
লগিন এবং টোকেন | সার্ভারকে প্রতিটি রিকুয়েস্টে cookie পাঠাতে হয়। | সার্ভারকে প্রতিটি রিকুয়েস্টে token পাঠাতে হয়। |
টোকেনের সময়সীমা | সাধারণত cookie একটি নির্দিষ্ট সময়ের জন্য বৈধ থাকে। | টোকেনের একটি নির্দিষ্ট সময়সীমা থাকে (যেমন ১ ঘণ্টা)। |
নিরাপত্তা | নিরাপত্তা cookie চুরি হওয়ার সম্ভাবনা থাকতে পারে। | টোকেন চুরি হলে, তা দীর্ঘ সময় অবৈধভাবে ব্যবহার করা যেতে পারে। |
CouchDB একটি ওপেন সোর্স NoSQL ডাটাবেস যা ডেটাবেস এবং ডকুমেন্টের নিরাপত্তা এবং অ্যাক্সেস নিয়ন্ত্রণের জন্য User Management এবং Role-based Access Control (RBAC) ব্যবস্থাপনা সমর্থন করে। এই ব্যবস্থাগুলি CouchDB এর ব্যবহারকারীদের এবং তাদের অ্যাক্সেসের জন্য শক্তিশালী নিয়ন্ত্রণ প্রদান করে।
CouchDB-তে User Management পদ্ধতি ব্যবহারকারীদের তৈরি, আপডেট, মুছে ফেলা এবং তাদের তথ্য পরিচালনা করার সুযোগ দেয়। CouchDB তে ব্যবহারকারীদের admin এবং regular users হিসেবে শ্রেণিবদ্ধ করা হয়।
CouchDB-তে ব্যবহারকারী তৈরি করার জন্য HTTP API ব্যবহার করা হয়। এই API-র মাধ্যমে নতুন ব্যবহারকারী তৈরি করা যায় এবং তাদের জন্য পাসওয়ার্ড এবং ভূমিকা (roles) নির্ধারণ করা যায়।
নতুন ব্যবহারকারী তৈরি করতে হলে _users ডাটাবেসে POST রিকুয়েস্ট পাঠানো হয়। নতুন ব্যবহারকারী তৈরি করার সময় তাদের username, password, এবং roles (যদি থাকে) প্রদান করতে হবে।
HTTP Request:
POST /_users/org.couchdb.user:username
Request Body (JSON):
{
"_id": "org.couchdb.user:john_doe",
"name": "john_doe",
"password": "securepassword",
"roles": ["admin", "editor"]
}
যদি সফল হয়, একটি JSON অবজেক্ট রিটার্ন হবে যা ব্যবহারকারী তৈরি হওয়ার প্রমাণ হবে:
{
"ok": true,
"id": "org.couchdb.user:john_doe",
"rev": "1-xxx"
}
Role-based Access Control (RBAC) একটি নিরাপত্তা কৌশল যা ব্যবহারকারীদের তাদের ভূমিকা (roles) অনুযায়ী বিভিন্ন অ্যাক্সেস প্রদান করে। CouchDB-তে, ব্যবহারকারীরা বিভিন্ন roles এর অধীনে কাজ করতে পারে, যা তাদের বিভিন্ন ডেটাবেসে এবং ডকুমেন্টে কী ধরনের অ্যাক্সেস থাকবে তা নির্ধারণ করে।
CouchDB-তে ডেটাবেস এবং ডকুমেন্টের নিরাপত্তা পরিচালনার জন্য security object ব্যবহার করা হয়। আপনি একটি ডেটাবেসের _security ডকুমেন্টে readers এবং writers ভূমিকা নির্ধারণ করতে পারেন।
HTTP Request:
GET /my_database/_security
Request Body (Security Object):
{
"admins": {
"names": ["admin_user"],
"roles": ["admin"]
},
"readers": {
"names": ["john_doe"],
"roles": ["reader"]
},
"writers": {
"names": ["john_doe"],
"roles": ["editor"]
}
}
এখানে:
{
"admins": {
"names": ["admin_user"],
"roles": ["admin"]
},
"readers": {
"names": ["john_doe"],
"roles": ["reader"]
},
"writers": {
"names": ["john_doe"],
"roles": ["editor"]
}
}
User Management এবং Role-based Access Control (RBAC) CouchDB এর নিরাপত্তা ব্যবস্থার অন্যতম গুরুত্বপূর্ণ অংশ। এটি ব্যবহারকারীদের ভূমিকা এবং অ্যাক্সেস নিয়ন্ত্রণ করতে সাহায্য করে, যা ডেটাবেসের নিরাপত্তা বজায় রাখে এবং অনুমোদিত ব্যবহারকারীদের প্রয়োজনীয় অ্যাক্সেস দেয়। CouchDB তে admins এবং regular users ভূমিকা অনুযায়ী বিভিন্ন readers, writers এবং admins নির্ধারণ করে ডেটাবেসের অ্যাক্সেস নিয়ন্ত্রণ করা হয়।
CouchDB সার্ভারটির নিরাপত্তা বাড়ানোর জন্য SSL (Secure Socket Layer) বা TLS (Transport Layer Security) সেটআপ করা খুবই গুরুত্বপূর্ণ। SSL ব্যবহার করে আপনি সার্ভারের সাথে সংযুক্তির সময় ডেটা এনক্রিপ্ট করতে পারেন, যা ডেটার গোপনীয়তা ও নিরাপত্তা নিশ্চিত করে। নিচে CouchDB এর সঙ্গে SSL সেটআপ করার বিস্তারিত প্রক্রিয়া আলোচনা করা হলো।
CouchDB এর সঙ্গে SSL সেটআপ করতে প্রথমে আপনাকে একটি SSL সার্টিফিকেট তৈরি করতে হবে। আপনি নিজে একটি Self-signed certificate তৈরি করতে পারেন অথবা একটি বিশ্বস্ত সার্টিফিকেট অথরিটি (CA) থেকে সার্টিফিকেট কিনতে পারেন।
SSL সার্টিফিকেট তৈরি করতে OpenSSL ব্যবহার করা যেতে পারে। নিচের কমান্ডটি দিয়ে সার্টিফিকেট এবং প্রাইভেট কি তৈরি করা যাবে:
openssl req -new -x509 -days 365 -nodes -out /etc/couchdb/couchdb-cert.pem -keyout /etc/couchdb/couchdb-key.pem
এখানে:
এটি ১ বছরের জন্য একটি Self-signed certificate তৈরি করবে। আপনি এই সার্টিফিকেট ফাইল দুটি CouchDB কনফিগারেশনে ব্যবহার করবেন।
CouchDB এর কনফিগারেশন ফাইলটি local.ini এবং default.ini ফাইলের মধ্যে থাকে, যা সাধারণত /opt/couchdb/etc বা /etc/couchdb ডিরেক্টরিতে অবস্থান করে। SSL সেটআপ করার জন্য এই ফাইলগুলোতে কিছু পরিবর্তন করতে হবে।
CouchDB এর কনফিগারেশন ফাইলটি খুলুন:
sudo nano /opt/couchdb/etc/local.ini
[httpd] সেকশনটি খুঁজে বের করুন এবং SSL সেটিংস যোগ করুন:
[httpd]
enable_ssl = true
ssl_cert_file = /etc/couchdb/couchdb-cert.pem
ssl_key_file = /etc/couchdb/couchdb-key.pem
ssl_version = tlsv1.2
ssl_ciphers = HIGH:!aNULL:!MD5
এখানে:
true
করতে হবে।SSL কনফিগারেশন সম্পূর্ণ করার পর, CouchDB সার্ভিসটি পুনরায় রিস্টার্ট করতে হবে যাতে নতুন পরিবর্তনগুলি কার্যকর হয়।
sudo systemctl restart couchdb
অথবা, যদি আপনি service কমান্ড ব্যবহার করতে চান:
sudo service couchdb restart
SSL কনফিগারেশন সঠিকভাবে কাজ করছে কিনা তা পরীক্ষা করতে, আপনি ব্রাউজারে CouchDB সার্ভার অ্যাক্সেস করতে পারেন HTTPS প্রোটোকলের মাধ্যমে। উদাহরণস্বরূপ:
https://your-server-ip:5984
এখানে:
এটি HTTPS প্রোটোকল দিয়ে সংযোগ স্থাপন করবে এবং যদি SSL সঠিকভাবে কনফিগার করা থাকে, তবে ব্রাউজারে নিরাপত্তা চিহ্ন প্রদর্শিত হবে।
CURL কমান্ডের মাধ্যমে আপনি SSL সংযোগ পরীক্ষা করতে পারেন:
curl -X GET https://localhost:5984 -k
এখানে:
-k
ফ্ল্যাগ ব্যবহার করলে SSL সার্টিফিকেটের ভ্যালিডিটি চেক করা হবে না, যা self-signed সার্টিফিকেটের জন্য উপযুক্ত।যদি আপনি Self-signed certificate ব্যবহার না করতে চান এবং তৃতীয় পক্ষের CA থেকে একটি SSL সার্টিফিকেট ব্যবহার করতে চান, তবে আপনি সঠিক SSL সার্টিফিকেট এবং CA সার্টিফিকেট ইনস্টল করতে হবে। এই সার্টিফিকেটগুলি পাবেন সার্টিফিকেট অথরিটি (যেমন: Let's Encrypt, Comodo, Digicert) থেকে।
CouchDB-তে SSL সেটআপ নিরাপদ HTTPS সংযোগ স্থাপন করার জন্য গুরুত্বপূর্ণ। এটি ডেটার গোপনীয়তা ও নিরাপত্তা সুনিশ্চিত করে, বিশেষ করে যখন ডেটাবেসটি পাবলিক নেটওয়ার্কে ব্যবহৃত হয়। Self-signed certificate বা CA সার্টিফিকেট ব্যবহার করে আপনি সহজেই SSL সংযোগ স্থাপন করতে পারেন।
common.read_more